Computer and network systems (such as data storage systems, server systems, cloud storage systems, personal computers, and workstations) typically include data storage devices for storing and retrieving data. These data storage devices can include hard disk drives (HDDs), solid-state drives (SSDs), tape storage devices, optical storage drives, hybrid storage devices that include both rotating and solid-state data storage elements, and other mass storage devices.
As networked computer systems grow in numbers and capability, there is a need for more storage system capacity. Cloud computing and large-scale data processing further increase the need for digital data storage systems that are capable of transferring and holding very large amounts of data. Data centers typically include many rack-mountable storage units, which store the large amounts of data.
One approach to providing sufficient data storage in data centers is the use of arrays of independent data storage devices. Many data storage devices can be held in an electronics enclosure. An electronics enclosure is a modular unit that can hold and operate independent data storage devices in an array, computer processors, routers and other electronic equipment. The data storage devices are held and operated in close proximity within the electronics enclosure, so that many data storage devices can be fit into a defined volume. Operating many data storage devices within close proximity within the electronics enclosure can create heat or vibration issues leading to premature failure of the data storage devices. Accordingly, electronics enclosures typically include fans or other cooling devices. For example, an enclosure may have fans on one side pulling out hot air while cold air enters the enclosure at the opposite end. This results in a temperature gradient across the subsystem.
Host or server systems typically attempt to distribute storage operations evenly or uniformly among the available data storage devices. For example, the host system or server accepts incoming storage commands, sorts the commands in a primary command queue according to logical block addresses (LBAs) and issues or sends the commands to individual queues of data storage devices. Unfortunately, the host system or server has no knowledge of how the individual device command queues handle the commands. This lack of knowledge can result in, among other deleterious effects, unnecessary command execution latency and power usage by the data storage devices.